Skip to content

refactor+fix: 全矩阵审查收敛三单——#110 装配尾段去重 / #111 recordSpanError 改 errors.Is / #112 无 scheme 带路径显式报错 - #116

Merged
zy84338719 merged 1 commit into
mainfrom
fix/sweep-20261112
Nov 11, 2026
Merged

zy84338719 merged 1 commit into
mainfrom
fix/sweep-20261112

Conversation

@zy84338719

Copy link
Copy Markdown
Contributor

关联 issue:#110、#111、#112(backlog 索引:#109)

逐单变更

#110 装配尾段收敛(refactor)

  • 抽 assembleMeterProvider(metricExp, res, tp)(init.go):周期读取器 → MeterProvider → runtime.Start + 失败回滚,gRPC(init.go)与 HTTP(otlphttp.go)两分支各剩一行调用;「runtime.Start 必须显式指定 provider」关键注释随实现单点维护
  • 另抽 applyCommonGrpcOpts 泛型帮助函数:grpc 分支 trace/metric 两组逐字复制的 WithEndpoint/WithInsecure/WithHeaders 选项构建收编(Go 1.26 泛型,Option 构造器由调用方注入)
  • DisableMetrics 早退与导出器创建失败回滚(错误文案两分支不同)保留在各自分支

#111 recordSpanError 改 errors.Is(fix,gormotel)

  • switch err { case nil, gorm.ErrRecordNotFound, ... } 相等比较 → errors.Is 链:包装后的 ErrRecordNotFound 不再被误标 span 失败(此前 APM 上未命中查询全量报红)
  • 回归测试:TestRecordSpanError_WrappedSentinelsStayUnset(nil/裸哨兵/一层包装/多层包装 × 4 哨兵)+ TestRecordSpanError_RealErrorStillMarked 真错误正向对照(防把报错面一起抹掉)+ TestOtelPlugin_FirstMissSpanUnset 真实 gorm First 未命中全链路契约钉

#112 无 scheme 带路径显式报错(fix,init)

  • parseOTLPHTTPEndpoint 无 scheme 分支遇 "/" 直接报错并提示补 scheme(此前 "collector:4318/api/otel" 被整串当 host:port、basePath 恒空、导出 404 循环——违反本包「不静默断供」纪律)
  • 错误不回显端点原值(无 scheme 形态也可能内嵌凭据,与既有内嵌凭据拒绝同一口径)
  • 测试:TestParseOTLPHTTPEndpoint_SchemelessPathRejected(基址路径/无端口带路径/尾斜杠三形态)

验证

  • GOWORK=off go test -race ./... 全绿;gofmt -l . 干净;golangci-lint 2.15.0 0 issues
  • Go 地板任务:go.mod 已是 go 1.26.0、ci.yml 已是 go-version: '1.26'(job 名不变),无需改动
  • logx 地板 v0.10.0 已随 build: 依赖地板抬到 logx v0.10.0 #113 先行合入

…Provider(#110)——reader+mp+runtime.Start+失败回滚两处逐字复制抽为单点,runtime.Start 必须显式指定 provider 的关键注释随实现单点维护;另抽 applyCommonGrpcOpts 泛型帮助函数收编 grpc 分支 trace/metric 两组逐字复制的连接选项构建

fix(gormotel): recordSpanError 哨兵判定改 errors.Is(#111)——switch == 是相等比较,经 fmt.Errorf("%w") 包装后的 gorm.ErrRecordNotFound(业务未命中,最高频被包装哨兵)此前不匹配、span 被 RecordError+SetStatus(Error),APM 上未命中查询全量报红;补 wrapped 哨兵回归测试(多级包装全命中)+ 真错误正向对照 + First 未命中全链路契约钉

fix(init): parseOTLPHTTPEndpoint 无 scheme 分支显式拒绝带路径段(#112)——"collector:4318/api/otel" 此前被整串当 host:port 收下、basePath 恒空、导出打到根路径,/api/otel 段无声丢失(Init 成功、导出 404 循环),与 validateGRPCEndpoint「不合规输入报错,不静默断供」纪律相悖;报错提示补 scheme、不回显端点原值,补 parse 回归测试
@zy84338719
zy84338719 merged commit a974372 into main Nov 11, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in oekit PR 审查队列 Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant